草庐IT

c++ - C++ FakeIt 库多重继承

全部标签

c++ - 虚拟继承抽象类中的参数化构造函数

我有一个经典的虚拟继承钻石:classA{protected:A(constchar*x){...}}classB:publicvirtualA{protected:B():A(NULL){...}public:virtualvoidfoo()=0;}classC:publicvirtualA{protected:C():A(NULL){...}public:virtualvoidbar()=0;}classD:publicB,publicC{public:D(constchar*x):A(x){...}voidfoo();voidbar();}我在B和C中使用NULL因为它们是抽象类

c++ - 关于 C++ 继承的初学者架构主题

来自纯“C”,我是一个C++新手,对OO开发或多或少是新手,因此我提前为我对以下主题的“幼稚”观点道歉。在下文中,我试图以抽象的方式描述我的问题(我的真实类是不同的)。代码部分可能无法编译,应仅被视为“想法”。我有几个类,继承自一个基类:classBase{};classDerived1:Base{};classDerived2:Base{};classDerived3:Base{};此外,vector包含指向派生类实例的指针:std::vectorcollection;现在我想提供这个类方案供其他用户使用。问题:当用户遍历集合时,他/她如何知Prop体的类类型?为派生类提供虚拟成员函

c++ - 使用可变参数模板的递归继承

考虑以下代码:#includestructActionOption{virtualvoidfoo(int)const=0;};templatestructActionType;templatestructActionType:ActionOption{virtualvoidfoo(int)constoverride{std::cout::foo(int)called.\n";}};templatestructActionType:ActionOption{virtualvoidfoo(int)constoverride{std::cout::foo(int)called.\n";}};

c++ - 与构建灵活设计的模板相比,多重继承机制

这是question的缩小版本由于范围太广而搁置。在ModernC++Design的第6-7页,AndreiAlexandrescu列出了三种多重继承弱于模板的方式构建灵活的设计。他特别指出,多重继承提供的机制很差(方括号中的文本和格式是我根据我对上下文):Insuchasetting[i.e.multipleinheritance],[tobuildaflexibleSmartPtr,]theuserwouldbuildamultithreaded,reference-countedsmartpointerclassbyinheritingsomeBaseSmartPtrclassa

c++ - 类模板多重继承和函数重载

为什么下面main中对waitForEvent的函数调用不明确?#includestructEvent1{charc1[1];};structEvent2{charc2[2];};templatestructEventSource{voidwaitForEvent(Evente){std::coutEvent1Source;typedefEventSourceEvent2Source;structEvent12Source:publicEvent1Source,publicEvent2Source{};intmain(){Event12Sourcesource;source.waitF

c++ - 为什么我不能使用继承来实现C++中的接口(interface)?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:ImplementingabstractclassmembersinaparentclassWhydoesC++notletbaseclassesimplementaderivedclass'inheritedinterface?考虑这些对象:structA{virtualvoidfoo()=0;};structB{voidfoo(){/*neatimplementation*/}};我想知道为什么--compiler-wise--以下对象被认为是抽象的:structC:B,A{usingB::foo;//I

C++ 接口(interface)、继承、多态性

想象一下这个场景:接口(interface)I1:m1(),由C1类实现接口(interface)I2:m2(),由C2类实现接口(interface)I3:m3(),由C3类实现我想定义接受参数arg的函数。voidf1(I1arg){usem1()}voidf2([I1,I2]arg){usem1()andm2()}voidf3([I2,I3]arg){usem2()andm3()}然后我要定义:一个“union”接口(interface)I123,它具有所有方法,由C123实现一个“union”类C123,它继承现有类C1、C2、C3的实现方法。然后我想实例化C123并将其与f1

c++ - 使用继承函数打印派生类的类名

有没有什么方法可以在不覆盖派生类中的函数的情况下打印具有继承函数的派生类的类名?classA{public:virtualvoidprint(){printf("%s",__PRETTY_FUNCTION__);}};classB:publicA{};intmain(){Bb;b.print()//shouldyield"B::print()"butyields"A::print()"}我要求这样我就可以在重写的函数中调用A::print()来打印与父类相关的属性,但包括当前类名。 最佳答案 __PRETTY_FUNCTION__创

c++ - 在多态性增加派生类大小的多重继承的情况下,在派生类中为析构函数编写代码。为什么?

#includestructBase1{public:virtualvoidshow()=0;};structBase2{public:virtualvoidDisplay()=0;};classDerived:virtualpublicBase1,virtualpublicBase2{public:virtualvoidshow(){}virtualvoidDisplay(){}};voidmain(){usingnamespacestd;cout输出显示12但是当我插入Dervied类的析构函数时,即以下代码#includestructBase1{public:virtualvoi

c++ - 继承一个带有内部类的模板类,并在继承类中访问内部类

我有一个模板类“BinaryHeap”,它还在自身内部声明了一个公共(public)类“Item”。现在我想用用于元素查找的散列扩展BinaryHeap,因此继承了它。我将其称为“HashedBinaryHeap”,它应该使用与BinaryHeap相同的Item类。stub看起来像这样:templateclassBinaryHeap{public:classItem{...};...voidappendItem(constItem&item);...};templateclassHashedBinaryHeap:publicBinaryHeap{public:...voidappend